#include <iostream>


class Test
{
public:
    //初始化列表:1、常成员变量只能在初始化列表中进行赋值
    //          2、括号外的一定是成员变量，括号里的一定是形参
    //          3、引用成员也必须要在初始化列表中初始化
    Test(int b,double c):a(10),b(b),c(c)
    {

    }
    void show()
    {
        std::cout<<a<<b<<c<<std::endl;
    }

    //const修饰函数

    //修饰返回值
    const Test& get()//防止返回的引用对原对象的修改
    {
        return *this;
    }

    //修饰形参
    // void func(const Test& t)//防止传入的引用对原对象的修改
    // {

    // }

    const Test& func(const Test& t)const //常成员函数：不能对对象的成员变量进行任何修改
    {
        return t;
    }
private:
    const int a;//常成员变量
    //int& d;
    int b;
    double c;
};

int main()
{
    Test t(5,2.1);
    const Test& a = t.func(t);
    t.show();

    return 0;
}